import { defineStore } from "pinia";
import type { reqCategoryType } from "@/api/attr";
import {
    requestCategory1,
    requestCategory2,
    requestCategory3,
  } from "@/api/attr";
  import { ElMessage } from "element-plus";


//state的类型限制
interface storeType{
    categoryList1: reqCategoryType
    categoryList2: reqCategoryType
    categoryList3: reqCategoryType
    category1Id: null|number,
    category2Id: null|number,
    category3Id: null|number,
}
const useAttrStore = defineStore('attr',{
    //state数据(categoryId在没有值的时候默认设置0,但是后来发现在select中使用的时候,必须写null,所以我们改为null)
    state:():storeType=>{
        return {
            categoryList1: [],
            categoryList2: [],
            categoryList3: [],
            category1Id: null,
            category2Id: null,
            category3Id: null,
        }
    },
    getters:{

    },
    actions:{
        //请求一级分类数据
        async getCategory1(){
            try {
                //发送请求
                const re = await requestCategory1()
                //把一级分类的值赋值给state
                this.categoryList1=re
            } catch (e) {
                ElMessage.error('请求一级分类失败')
            }
        },
        //请求二级分类数据
        async getCategory2(){
            try {
                //发送请求
                const re = await requestCategory2(this.category1Id as number)
                //把一级分类的值赋值给state
                this.categoryList2=re
            } catch (e) {
                ElMessage.error('请求二级分类失败')
            }
        },
        //请求一级分类数据
        async getCategory3(){
            try {
                //发送请求
                const re = await requestCategory3(this.category2Id as number)
                //把一级分类的值赋值给state
                this.categoryList3=re
            } catch (e) {
                ElMessage.error('请求三级分类失败')
            }
        },
    }
})

export default useAttrStore